//
//  XUIPreviewImageViewController.h
//  Etion
//
//  Created by hua ouyang on 11-9-29.
//  Copyright 2011年 GuangZhouXuanWu. All rights reserved.
//

@interface XUIPreviewImageViewController : UIViewController
{
    UINavigationBar *_navBar;
}

@property(nonatomic,assign) BOOL rotationToInterfaceOrientation;

/**
 *  初始化图片浏览视图
 *
 *  @param paths 图片的本地路径，NSString数组
 *
 *  @return 返回图片浏览视图
 */
- (id)initWithImagePaths:(NSArray*)paths;

/**
 *  初始化图片浏览视图
 *
 *  @param images 图片UIImage对象
 *
 *  @return 返回图片浏览视图
 */
- (id)initWithImages:(NSArray*)images;

/**
 *  初始化图片浏览视图，对于不存在的原图，通过URL地址下载
 *
 *  @param thumbImagePaths 缩略图的本地完整保存路径，且缩略图已经成功下载到本地
 *  @param originImageURLs 与缩略图对应的原图URL地址
 *  @param savePath        保存原图的本地路径
 *
 *  @return 返回图片浏览视图
 */
- (id)initWithThumbImagePath:(NSArray*)thumbImagePaths originImageURL:(NSArray*)originImageURLs downloadSavePath:(NSString*)savePath;


- (id)initWithImageURL:(NSArray*)originImageURLs downloadSavePath:(NSString*)savePath;

- (void)presentViewControllerCompletion:(void (^)())completion;

//- (void)dismissViewCompletion:(void (^)())completion;

/**
 *  默认选中某一张当前显示
 *
 *  @param index 默认某一张
 */
- (void)defaultSelectAtIndex:(NSUInteger)index;

/**
 *  删除某张图片，XUIPreviewImageViewController只具备删除图片的功能，但不具有具体界面，具体界面由子类实现
 *
 *  @param index 要删除的图片索引
 */
- (void)deleteImageAtIndex:(NSUInteger)index;

/**
 *  删除当前图片，XUIPreviewImageViewController只具备删除图片的功能，但不具有具体界面，具体界面由子类实现
 */
- (void)deleteCurrentImage;

/**
 *  当前滚动到哪一张图片
 *
 *  @return 图片索引
 */
- (NSUInteger)currentIndex;

/**
 *  当前图片的数量
 *
 *  @return 图片数量
 */
- (NSUInteger)currentImageCount;

/**
 *  当前原图片
 *
 *  @return 原图
 */
- (UIImage*)currentOriginalImage;

/**
 *  图片已经显示那一张
 *
 *  @param index    显示那一张索引
 *  @param original 显示的是否为原图
 */
- (void)didShowImageAtIndex:(NSUInteger)index andIsOriginalImage:(BOOL)original;

/**
 *  图片已经滚动到新的一张
 *
 *  @param newIndex 新一张图片的索引
 */
- (void)didScrollToNewImageAtIndex:(NSUInteger)newIndex;

/**
 *  隐藏导航条及状态栏，默认是隐藏
 *
 *  @param hidden       是否隐藏
 *  @param animated     是否动画效果
 */
- (void)hiddenNavBar:(BOOL)hidden animated:(BOOL)animated;

/**
 *  创建导航条，XUIPreviewImageViewController有默认的导航条，若子类要创建属于自己的导航条，需重写此方法，导航条必须基于CViewBaseViewController
 */
- (void)createNavBar;

/**
 *  关闭XUIPreviewImageViewController，子类和PresentSwitchViewController组合使用时，必须用此方法关闭XUIPreviewImageViewController
 */
- (void)dismissPreviewImageViewController:(BOOL)animated;

/**
 *  单击浏览图片时，是否关闭XUIPreviewImageViewController，子类若不重写此方法，默认是关闭，否则，出现导航条
 *
 *  @return YES，响应closePreviewImageViewController，关闭PreviewImageViewController
 */
- (BOOL)closePreviewImageViewControllerWhenClickPreviewImage;

/**
 *  导航条滑动出现时，响应此方法
 *
 *  @param appear YES，滑动出现，NO，滑动消失
 */
- (void)navBarSlidingAppearWhenClickPreviewImage:(BOOL)appear;

/**
 *  转动方法，界面转动时会触发次方法，通过重写此方法实现对子列界面元素的调整
 *
 *  @param toInterfaceOrientation 将要转动到的方向
 *  @param duration               动画时间
 */
- (void)previewImageViewControllerWillAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;

/**
 *  如果PreviewImageViewController需要下载图片，图片下载完会触发此方法，子类重写此方法，会得到下载完成通知
 *
 *  @param imageFilePath 图片全路径
 *  @param index         图片索引
 */
- (void)previewImageViewControllerFinishDownloadImage:(NSString*)imageFilePath atIndex:(NSUInteger)index;

/**
 *  若子类需要添加额外的控件元素，需要重写此方法，并首先调用父类方法
 */
- (void)initViewDidLoad;

@end

@interface XUIPreviewImageViewController (ZoomPresentPreviewImageViewController)

- (void)zoomPresentPreviewImageViewController:(NSArray*)imageContainViews;

- (void)removeImageContainViewAtIndex:(NSUInteger)index;

@end